#include "serial_print.h"
#include <Arduino.h>

// 实现 serial_print_opt 结构体的成员函数
void initSerial(int baudRate) {
    Serial.begin(baudRate);
    while (!Serial); // 等待串口初始化完成
}

void printString(const char* str) {
    Serial.print(str);
}

void printlnString(const char* str) {
    Serial.println(str);
}

void printInt(int num) {
    Serial.print(num);
}

void printlnInt(int num) {
    Serial.println(num);
}

void serialPrintf(const char* format, ...) {
    va_list args;
    va_start(args, format);
    Serial.printf(format, args);
    va_end(args);
}

// 定义全局 serial_print_opt 结构体对象
serial_print_opt_t serial_print_opt = {
    .init = initSerial,
    .print_string = printString, 
    .println_string = printlnString, 
    .print_int = printInt, 
    .println_int = printlnInt, 
    .printf = serialPrintf,
};
